Skip to content

fix(deps): bump fast-xml-parser to v5.9.3 (clears XMLBuilder injection advisory)#114

Merged
PAMulligan merged 1 commit into
mainfrom
108-security-bump-fast-xml-parser-451-453-in-range-safe-lockfile-refresh
Jul 1, 2026
Merged

fix(deps): bump fast-xml-parser to v5.9.3 (clears XMLBuilder injection advisory)#114
PAMulligan merged 1 commit into
mainfrom
108-security-bump-fast-xml-parser-451-453-in-range-safe-lockfile-refresh

Conversation

@PAMulligan

Copy link
Copy Markdown
Collaborator

Summary

Closes #108 — but corrects its premise. During implementation the framed fix turned out to be wrong, so this PR does the actual fix.

Why "bump to 4.5.3" was a no-op

  • No advisory is patched in 4.5.3. The in-range (^4) fixes land in 4.5.4 / 4.5.5; 4.5.3 clears none of the six advisories that affected 4.5.1.
  • The lockfile already resolved ^4.5.1 → 4.5.6, which already covered every in-range fix (including the critical DOCTYPE regex-injection one). So 4.5.3 would have been a downgrade.
  • The one remaining open alert — GHSA-gh4j-gqv2-49f6 / CVE-2026-41650 (XMLBuilder comment & CDATA injection, medium) — is patched only in 5.7.0, with no 4.x backport. That signals the v4 line is EOL for security fixes: future advisories won't be patchable in-range either.

So resolving the advisory requires a major 4 → 5 bump, not the "non-breaking refresh" the issue assumed.

Risk note

The vulnerable API is XMLBuilder, which this codebase never uses — packages/pipeline/src/indesign/xml.ts imports XMLParser only (read-only IDML parsing). Real-world exposure was already nil; this bump also future-proofs off the dead v4 line.

What changed

  • packages/pipeline: fast-xml-parser ^4.5.1^5.9.3 (lock resolves 4.5.6 → 5.9.3).
  • No source changes — v5's XMLParser accepts the identical option set, so xml.ts is untouched.

Verification

  • pnpm --filter @aurelius/pipeline typecheck — clean.
  • pnpm --filter @aurelius/pipeline test133/133 pass (17 files); the React generator snapshot is byte-identical, so parsing behaviour is unchanged.
  • pnpm --filter @aurelius/pipeline build — clean declaration emit.
  • Major bump is internal to @aurelius/pipeline with no API change, so it is not breaking for consumers of the package.

Note on the mutation gate

Stryker targets packages/pipeline but runs nightly / on-demand only — never on PRs. It mutates first-party source (unaffected by a dependency swap); happy to trigger workflow_dispatch on mutation.yml after merge if you want the score refreshed.

🤖 Generated with Claude Code

…on advisory

Corrects issue #108, whose premise was inaccurate: 4.5.3 patches none of the
advisories affecting the pinned range, and the lockfile already resolved
^4.5.1 to 4.5.6 (covering the in-range fixes). The one remaining open alert,
GHSA-gh4j-gqv2-49f6 / CVE-2026-41650 (XMLBuilder comment & CDATA injection),
is patched only in 5.7.0 with no 4.x backport -- the v4 line is EOL for
security fixes -- so clearing it requires a major bump, not the in-range
refresh the issue assumed.

- packages/pipeline: fast-xml-parser ^4.5.1 -> ^5.9.3 (resolves 4.5.6 -> 5.9.3)
- The pipeline uses XMLParser only (src/indesign/xml.ts); the vulnerable
  XMLBuilder API is never called, so real-world exposure was already nil.
  v5's XMLParser accepts the same options, so no code changes were needed.

Verified: pnpm typecheck, 133/133 vitest tests, and tsc build all pass; the
React generator snapshot is byte-identical (no behavioural change).

Closes #108

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@PAMulligan
PAMulligan merged commit 234f346 into main Jul 1, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Security] Bump fast-xml-parser ^4.5.1 → 4.5.3 (in-range, safe lockfile refresh)

1 participant